package com.fafica.model;

import java.io.File;
import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.commons.io.FilenameUtils;

import com.fafica.entidades.Artigo;
import com.fafica.entidades.InscritoMinicurso;
import com.fafica.fachada.Fachada;
import com.fafica.util.Parametros;

public class SubmeterArtigo implements Acao{

	public String executar(HttpServletRequest request, HttpServletResponse response) {

		String paginaRetorno = "index.jsp";
		String area = "";
		String tipo = "";
		InscritoMinicurso usuario = (InscritoMinicurso) request.getSession().getAttribute(Parametros.USUARIO_LOGADO);
		if(usuario != null){

			boolean isMultipart = ServletFileUpload.isMultipartContent(request);
			if(isMultipart){
				DiskFileItemFactory  diskFileItemFactory = new DiskFileItemFactory ();
				ServletFileUpload servletFileUpload = new ServletFileUpload(diskFileItemFactory);
				try {
					List<FileItem> itens = new ServletFileUpload(diskFileItemFactory).parseRequest(request);

					String caminho = request.getServletContext().getRealPath("/artigos");
					File diretorio = new File(caminho);

					String fileName = "";
					String fileNamePrefix = "";
					String fileNameSuffix = "";
					File file = null;
					
					for(FileItem fileItem : itens){
						if(fileItem.isFormField()){

							String campo = fileItem.getFieldName();
							if(campo.equals("area")){
								area = fileItem.getString();
							}
							else if(campo.equals("tipo")){
								tipo = fileItem.getString();
							}
						}
						else{
							fileName = FilenameUtils.getName(fileItem.getName());
							fileNamePrefix = FilenameUtils.getBaseName(fileName) + "_";
							fileNameSuffix = "." + FilenameUtils.getExtension(fileName);

							file = File.createTempFile(fileNamePrefix, fileNameSuffix, diretorio);
							fileItem.write(file);
						}
					}

					Artigo artigo = new Artigo();
					artigo.setArquivo(file.getName());
					//artigo.setAutor(usuario);
					artigo.setTipo(tipo);
					artigo.setArea(area);
					Fachada.getInstance().cadastroArtigo().cadastrarArtigo(artigo);
					paginaRetorno = "submeter_resumo.jsp";

				}catch(FileUploadException ex) {
					System.out.println("Error encountered while parsing the request");
				} catch(Exception ex) {
					System.out.println("Error encountered while uploading file");
				}
			}
		}

		return paginaRetorno;
	}

}
